/*
 * ============================================================================
 * = COPYRIGHT
 *          PAX Computer Technology(Shenzhen) Co., Ltd. PROPRIETARY INFORMATION
 *   This software is supplied under the terms of a license agreement or nondisclosure
 *   agreement with PAX Computer Technology(Shenzhen) Co., Ltd. and may not be copied or
 *   disclosed except in accordance with the terms in that agreement.
 *     Copyright (C) 2021 PAX Computer Technology(Shenzhen) Co., Ltd. All rights reserved.
 * ============================================================================
 */

import 'package:pigeon/pigeon.dart';


@ConfigurePigeon(PigeonOptions(
    dartOut: 'lib/auto_pigeon/poslink_sdk_manage.dart',
    javaOptions: JavaOptions(
      className: 'POSLinkManage',
      package: 'com.example.pos_link.pigeon',
    ),
    objcOptions: ObjcOptions(prefix: ''),
    javaOut: './android/src/main/java/com/example/pos_link/pigeon/POSLinkManage.java',
  ),
)
class ManageMultiMerchant {
  String? multiMerchantId;
  String? multiMerchantName;
}

class ManageSetVariableRequest {
  ManageEdcType? edcType;
  String? variableName1;
  String? variableValue1;
  String? variableName2;
  String? variableValue2;
  String? variableName3;
  String? variableValue3;
  String? variableName4;
  String? variableValue4;
  String? variableName5;
  String? variableValue5;
  ManageMultiMerchant? multiMerchant;
}

class ManageNewService {
  ManageNewServiceType? type;
  String? title;
  String? url;
}

class ManageServiceUpdate {
  String? updateId;
  ManageUpdateOperation? updateOperation;
  String? updatePayload;
}

class ManageServiceUsage {
  String? usageId;
  ManageServiceState? state;
  String? title;
  String? describe;
}

class ManageGoogleSmartTapCapBitmap {
  bool? standAlone;
  bool? semiIntegrated;
  bool? unattended;
  bool? online;
  bool? offline;
  bool? mmp;
  bool? zlibSupport;
  bool? printer;
  bool? printerGraphics;
  bool? display;
  bool? images;
  bool? audio;
  bool? animation;
  bool? video;
  bool? supportPayment;
  bool? supportDigitalReceipt;
  bool? supportServiceIssuance;
  bool? supportOtaPosData;
  bool? onlinePin;
  bool? cdPin;
  bool? signature;
  bool? noCvm;
  bool? deviceGeneratedCode;
  bool? spGeneratedCode;
  bool? idCapture;
  bool? bioMetric;
}

class ManageGoogleSmartTapPushService {
  ManageSecurity? security;
  ManageGoogleSmartTapCapBitmap? googleSmartTapCap;
  String? collectId;
  List<ManageServiceUsage?>? googleServiceUsage;
  List<ManageServiceUpdate?>? googleServiceUpdate;
  List<ManageNewService?>? googleNewService;
  ManageEndTap? endTap;
}

class ManageRebootRequest {
  String? classID;
}

class ManageInputAccountRequest {
  ManagePinpadEnableFlag? magneticSwipePinpadEnableFlag;
  ManagePinpadEnableFlag? manualPinpadEnableFlag;
  ManagePinpadEnableFlag? contactlessPinpadEnableFlag;
  ManagePinpadEnableFlag? scannerPinpadEnableFlag;
  ManageExpiryDatePrompt? expiryDatePrompt;
  String? timeout;
  ManageEncryptionFlag? encryptionFlag;
  String? keySlot;
  String? minAccountLength;
  String? maxAccountLength;
  ManageEdcType? edcType;
  ManageTransactionType? transactionType;
  ManageContinuousScreen? continuousScreen;
}

class ManageUpdateResourceFileRequest {
  String? fileUrl;
  ManageFileType? fileType;
  ManageTargetDevice? targetDevice;
}

class ManageReprintRequest {
  String? printLastReceipt;
  ManageEdcType? edcType;
  String? originalReferenceNumber;
  String? authorizationCode;
  String? ecrReferenceNumber;
  ManageReceiptPrintFlag? receiptPrintFlag;
}

class ManageGetVariableRequest {
  ManageEdcType? edcType;
  String? variableName1;
  String? variableName2;
  String? variableName3;
  String? variableName4;
  String? variableName5;
  ManageMultiMerchant? multiMerchant;
}

class ManageApplePayVas {
  String? merchantId;
  ManageUrlMode? urlMode;
  String? url;
}

class ManageGetSignatureRequest {
  String? classID;
}

class ManageGetSafParametersRequest {
  String? classID;
}

class ManageSetApplePayVasParametersRequest {
  ManageVasMode? vasMode;
  ManageApplePayVas? applePayVasData;
}

class ManageSetSafParametersRequest {
  ManageSafMode? safMode;
  String? startDateTime;
  String? endDateTime;
  String? durationInDays;
  String? maxNumber;
  String? totalCeilingAmount;
  String? ceilingAmountPerCardType;
  String? haloPerCardType;
  ManageSafUploadMode? uploadMode;
  String? autoUploadIntervalTime;
  ManageDeleteSafConfirmation? deleteSafConfirmation;
}

class ManageResetRequest {
  String? classID;
}

class ManageCheckFileRequest {
  String? fileName;
}

class ManageGoogleServiceTypeBitmap {
  bool? allServices;
  bool? allServicesExceptPpse;
  bool? ppse;
  bool? loyalty;
  bool? offer;
  bool? giftCard1;
  bool? privateLabelCard;
  bool? cloudBasedWallet;
  bool? mobileMarketingPlatform;
  bool? walletCustomer;
}

class ManageGoogleSmartTap {
  ManageGoogleSmartTapCapBitmap? googleSmartTapCap;
  String? collectId;
  String? storeLocalId;
  String? terminalId;
  String? merchantName;
  String? merchantCategory;
  ManageGoogleServiceTypeBitmap? serviceType;
  ManageSecurity? security;
  ManageEndTap? endTap;
  ManageOseToPpse? oseToPpse;
}

class ManageSetGoogleSmartTapParametersRequest {
  ManageVasMode? vasMode;
  ManageGoogleSmartTap? googleSmartTapData;
}

class ManageInitRequest {
  String? classID;
}

class ManageResetMsrRequest {
  String? classID;
}

class ManageTokenAdministrativeRequest {
  ManageEdcType? edcType;
  ManageTokenCommand? tokenCommand;
  String? token;
  String? tokenSn;
  String? expiryDate;
}

class ManageVasPushDataRequest {
  ManageVasMode? vasMode;
  ManageGoogleSmartTapPushService? googleSmartTapPushService;
}

class ManageDoSignatureRequest {
  ManageUploadFlag? uploadFlag;
  String? hostReferenceNumber;
  ManageEdcType? edcType;
  String? timeout;
  ManageContinuousScreen? continuousScreen;
}

class ManageDeleteImageRequest {
  String? imageName;
}

class ManageSetGoogleSmartTapParametersResponse {
  String? responseCode;
  String? responseMessage;
}

class ManageGetVariableResponse {
  String? responseCode;
  String? responseMessage;
  String? variableValue1;
  String? variableValue2;
  String? variableValue3;
  String? variableValue4;
  String? variableValue5;
  ManageMultiMerchant? multiMerchant;
}

class ManageRebootResponse {
  String? responseCode;
  String? responseMessage;
}

class ManageDeleteImageResponse {
  String? responseCode;
  String? responseMessage;
}

class ManageVasPushDataResponse {
  String? responseCode;
  String? responseMessage;
}

class ManageDoSignatureResponse {
  String? responseCode;
  String? responseMessage;
}

class ManageTokenAdministrativeResponse {
  String? responseCode;
  String? responseMessage;
  String? token;
  String? tokenSn;
  String? maskedPan;
  String? expiryDate;
}

class ManageCheckFileResponse {
  String? responseCode;
  String? responseMessage;
  String? checkSum;
}

class ManageHardwareConfigurationBitmap {
  bool? magstripe;
  bool? emvChip;
  bool? emvContactless;
  bool? cameraFront;
  bool? laserScanner;
  bool? cameraRear;
  bool? printer;
  bool? touchscreen;
}

class ManageInitResponse {
  String? responseCode;
  String? responseMessage;
  String? sn;
  String? modelName;
  String? osVersion;
  String? macAddress;
  String? linesPerScreen;
  String? charsPerLine;
  String? appName;
  String? appVersion;
  String? wifiMac;
  ManageTouchscreenStatus? touchscreen;
  ManageHardwareConfigurationBitmap? hardwareConfigurationBitmap;
  ManageAppActivated? appActivated;
  String? licenseExpiry;
  ManageProtocolFlag? protocolFlag;
}

class ManageGetSafParametersResponse {
  String? responseCode;
  String? responseMessage;
  ManageSafMode? safMode;
  String? startDateTime;
  String? endDateTime;
  String? durationInDays;
  String? maxNumber;
  String? totalCeilingAmount;
  String? ceilingAmountPerCardType;
  String? haloPerCardType;
  ManageSafUploadMode? uploadMode;
  String? autoUploadIntervalTime;
  ManageDeleteSafConfirmation? deleteSafConfirmation;
}

class ManageGetSignatureResponse {
  String? responseCode;
  String? responseMessage;
  String? signatureData;
}

class ManageResetResponse {
  String? responseCode;
  String? responseMessage;
}

class ManageReprintResponse {
  String? responseCode;
  String? responseMessage;
}

class ManageResetMsrResponse {
  String? responseCode;
  String? responseMessage;
}

class ManageUpdateResourceFileResponse {
  String? responseCode;
  String? responseMessage;
}

class ManageSetApplePayVasParametersResponse {
  String? responseCode;
  String? responseMessage;
}

class ManageSetSafParametersResponse {
  String? responseCode;
  String? responseMessage;
}

class ManageInputAccountResponse {
  String? responseCode;
  String? responseMessage;
  ManageEntryMode? entryMode;
  String? track1Data;
  String? track2Data;
  String? track3Data;
  String? pan;
  String? expiryDate;
  String? qrCode;
  String? ksn;
  String? cardHolder;
}

class ManageSetVariableResponse {
  String? responseCode;
  String? responseMessage;
  ManageMultiMerchant? multiMerchant;
}

enum ManageEntryMode {
  NotSet,
  Manual,
  Swipe,
  Contactless,
  LaserScanner,
  Chip,
  ChipFallBackSwipe,
  FrontCamera,
  RearCamera,
}

enum ManageSafMode {
  NotSet,
  StayOnline,
  StayOffline,
  OfflineTillBatch,
  OfflineOnDemandOrAuto,
}

enum ManageSafUploadMode {
  NotSet,
  UploadBeforeBatch,
  SilentAutoUpload,
}

enum ManageDeleteSafConfirmation {
  NotSet,
  WithPrompt,
  WithoutPrompt,
}

enum ManageTouchscreenStatus {
  NotSet,
  Use,
  NotUse,
}

enum ManageAppActivated {
  NotSet,
  Activated,
  NotActivated,
}

enum ManageProtocolFlag {
  NotSet,
  Visa1,
  Json,
}

enum ManageUploadFlag {
  NotUploadToHost,
  UploadToHost,
}

enum ManageEdcType {
  NotSet,
  All,
  Credit,
  Debit,
  Ebt,
  Gift,
  Loyalty,
  Cash,
  Check,
}

enum ManageContinuousScreen {
  NotSet,
  Default,
  NotGoToIdleScreen,
}

enum ManageVasMode {
  NotSet,
  VasOnly,
  VasAndPayment,
  VasOrPayment,
  PaymentOnly,
}

enum ManageSecurity {
  NotSet,
  Normal,
  Securely,
  PreSignature,
  NeedNotARightAuth,
}

enum ManageServiceState {
  NotSet,
  Unspecified,
  Success,
  InvalidFormat,
  InvalidValue,
}

enum ManageUpdateOperation {
  NotSet,
  NoOperation,
  RemoveServiceObject,
  SetBalance,
  AddBalance,
  SubtractBalance,
  Free,
}

enum ManageNewServiceType {
  NotSet,
  Unspecified,
  Valuable,
  Receipt,
  Survey,
  Goods,
  Signup,
}

enum ManageEndTap {
  NotSet,
  NormalFlow,
  StopTapSession,
}

enum ManageTokenCommand {
  NotSet,
  Lookup,
  Delete,
  Duplicate,
  Update,
}

enum ManageOseToPpse {
  NotSet,
  NormalFlow,
  StopVasAndDoPaymentDirectly,
}

enum ManageUrlMode {
  NotSet,
  FullVasMode,
  UrlMode,
}

enum ManageReceiptPrintFlag {
  NotSet,
  NoReceipt,
  MerchantOnly,
  CustomerOnly,
  BothCopy,
}

enum ManageFileType {
  NotSet,
  ResourceFile,
  OfflineRkiKeyFile,
  InstallationPackageFile,
  licenseFile,
}

enum ManageTargetDevice {
  NotSet,
  Terminal,
  ExternalPinpad,
}

enum ManagePinpadEnableFlag {
  NotSet,
  NotAllowed,
  Allowed,
}

enum ManageExpiryDatePrompt {
  NotSet,
  NotNeeded,
  PromptForManualEntryOnly,
}

enum ManageEncryptionFlag {
  NotSet,
  NotEncrypted,
  DukptDesWithPinMethod,
  DesOrTdesMethod,
  VoltageE2ee,
}

enum ManageTransactionType {
  NotSet,
  Unknown,
  Sale,
  Return,
  Authorization,
  PostAuthorization,
  ForceAuthorization,
  Adjust,
  Withdrawal,
  Activate,
  Issue,
  Reload,
  Cashout,
  Deactivate,
  Replace,
  Merge,
  ReportLost,
  Void,
  VoidSale,
  VoidReturn,
  VoidAuthorization,
  VoidPostAuthorization,
  VoidForceAuthorization,
  VoidWithdrawal,
  Inquiry,
  Verify,
  Reactivate,
  ForcedIssue,
  ForcedAdd,
  Unload,
  Renew,
  GetConvertDetail,
  Convert,
  Tokenize,
  IncrementalAuthorization,
  BalanceWithLock,
  RedemptionWithUnlock,
  Rewards,
  Reenter,
  TransactionAdjustment,
  Transfer,
  Finalize,
  Deposit,
  AccountPayment,
  Reversal,
}

@HostApi()
abstract class POSLinkManageApi {
   @async
   ManageDeleteImageResponse deleteImage(ManageDeleteImageRequest req);
   @async
   ManageDoSignatureResponse doSignature(ManageDoSignatureRequest req);
   @async
   ManageVasPushDataResponse vasPushData(ManageVasPushDataRequest req);
   @async
   ManageTokenAdministrativeResponse tokenAdministrative(ManageTokenAdministrativeRequest req);
   @async
   ManageResetMsrResponse resetMsr(ManageResetMsrRequest req);
   @async
   ManageInitResponse init(ManageInitRequest req);
   @async
   ManageSetGoogleSmartTapParametersResponse setGoogleSmartTapParameters(ManageSetGoogleSmartTapParametersRequest req);
   @async
   ManageCheckFileResponse checkFile(ManageCheckFileRequest req);
   @async
   ManageResetResponse reset(ManageResetRequest req);
   @async
   ManageSetSafParametersResponse setSafParameters(ManageSetSafParametersRequest req);
   @async
   ManageSetApplePayVasParametersResponse setApplePayVasParameters(ManageSetApplePayVasParametersRequest req);
   @async
   ManageGetSafParametersResponse getSafParameters(ManageGetSafParametersRequest req);
   @async
   ManageGetSignatureResponse getSignature(ManageGetSignatureRequest req);
   @async
   ManageGetVariableResponse getVariable(ManageGetVariableRequest req);
   @async
   ManageReprintResponse reprint(ManageReprintRequest req);
   @async
   ManageUpdateResourceFileResponse updateResourceFile(ManageUpdateResourceFileRequest req);
   @async
   ManageInputAccountResponse inputAccount(ManageInputAccountRequest req);
   @async
   ManageRebootResponse reboot(ManageRebootRequest req);
   @async
   ManageSetVariableResponse setVariable(ManageSetVariableRequest req);
}
